package com.dayuanit.dy17.mix.strings;

public class TestString {
    public static void main(String[] args) {
        //String StringBuilder StringBuffer区别？
//        String msg  = "a" + "b" + "c";//常量
//        String msg = "abc";//和上面写法效果是一样的

//        String msg2 = msg + "d";//创建一个StringBuilder
//        msg2 = msg + "e";//也会创建一个StringBuilder

//        String msg2 = msg + "d" + "e";//只会创建一个StringBuilder对象

        // 第9行代码和下面四行代码效果是一样的！
//        StringBuilder sx = new StringBuilder();
//        sx.append(msg);
//        sx.append("d");
//        String msg2 = sx.toString();

//        StringBuilder sx = new StringBuilder();
//        sx.append(msg);
//        sx.append("e");
//        msg2 = sx.toString();

        //拼接字符串，建议使用StringBuilder进行拼接，效率更高？这句话一半对，一半不对。

        //这种字符串的拼接，非常可怕，每次循环都要创建一个StringBuilder对象，且循环16次以后，每次都还要扩容。
        //性能及其低下。所以字符串往往会成为系统的瓶颈所在。
        String message = "";
        for (int i=0; i<100; i++) {
            message = message + "k";
        }

        //优化 整个循环都是使用一个StringBuilder对象。
        StringBuilder sx = new StringBuilder();
        for (int i=0; i<100; i++) {
            sx.append("k");
        }
        message = sx.toString();

    }
}
